'use strict';
const moment = require('moment');

//到时做一个定时任务 定时清理这些过期的验证码
module.exports = app => {
    const {
        STRING,
        INTEGER,
        DATE
    } = app.Sequelize;
    const UserMessage = app.model.define('userMessage', {
        id: {
            primaryKey: true,
            type: INTEGER,
            autoIncrement: true
        },
        message: STRING(100), // 
        messageType: INTEGER(2), //消息的类型 0 普通消息 1:购买成功   2 购买失败 
        orderCount: INTEGER(2), //用于控制app删除购物车数量 
        userId: STRING(41),
        createdAt: { //自定义时间格式
            type: DATE(),
            get() {
                return moment(this.getDataValue('createdAt')).format('YYYY-MM-DD HH:mm:ss');
            }
        },
        updatedAt: {
            type: DATE(),
            get() {
                return moment(this.getDataValue('updatedAt')).format('YYYY-MM-DD HH:mm:ss');
            }
        }
    }, {
        freezeTableName: true, // Model 对应的表名将与model名相同
        timestamps: true, //自动添加createdAt、updatedAt两个字段，分别表示创建和更新时间,且时间是实际时间,表里显示的是2019-02-13 23:50:20
        paranoid: true, //假删除
        underscored: false, ////不要改此   false: 字段以下划线（_）来分割（默认是驼峰命名风格）
        charset: 'utf8',
        collate: 'utf8_general_ci',
        classMethods: {
            associate: function (models) {
                userMessage.hasOne(models.userInfo, {
                    foreignKey: 'userId'
                })
            }
        }
    });

    return UserMessage;
};